profile
viewpoint
Simon Zeltser simonz130 @Google Seattle, WA https://www.linkedin.com/in/simon130/ Software Engineer, Observability and Deployment

GoogleCloudPlatform/microservices-demo 11504

Sample cloud-native application with 10 microservices showcasing Kubernetes, Istio, gRPC and OpenCensus.

GoogleCloudPlatform/dotnet-docs-samples 602

.NET code samples used on https://cloud.google.com

GoogleCloudPlatform/stackdriver-errors-js 319

Client-side JavaScript exception reporting library for Cloud Error Reporting

GoogleCloudPlatform/cloud-code-samples 292

Code templates to make working with Kubernetes feel like editing and debugging local code.

GoogleCloudPlatform/cloud-ops-sandbox 276

Cloud Operations Sandbox is an open source tool that helps practitioners to learn Service Reliability Engineering practices from Google and apply them on their cloud services using Cloud Operations suite of tools.

GoogleCloudPlatform/getting-started-dotnet 77

A tutorial for creating a complete application using .NET on Google Cloud Platform

GoogleCloudPlatform/endpoints-quickstart 64

Cloud Endpoints Quickstart Scripts

GoogleCloudPlatform/google-cloud-tfs 12

VSTS Extension for deploying to Google Cloud Platform services

sid-code/hobogo2 2

Flight searching project

issue commentGoogleCloudPlatform/cloud-ops-sandbox

Rename SRE recipe

Low prio, great candidate for new folks on the repo to look at

simonz130

comment created time in 6 days

PullRequestReviewEvent
PullRequestReviewEvent

issue commentgoogleapis/java-monitoring

com.example.monitoring.CreateMetricDescriptorIT: testCreateMetricDescriptor failed

Sorry, just saw it now - my team does logging and error reporting and this slipped my radar. It should be addressed by the Yoshi team.

flaky-bot[bot]

comment created time in 2 months

Pull request review commentgoogleapis/java-logging

fix: modify list log entries example documentation

 With Logging you can also list log entries that have been previously written. Ad imports at the top of your file:  ```java-import com.google.cloud.Page;+import com.google.api.gax.paging.Page; import com.google.cloud.logging.LogEntry; import com.google.cloud.logging.Logging.EntryListOption; ```  Then, to list the log entries, use the following code:  ``` java-Page<LogEntry> entries = logging.listLogEntries(-    EntryListOption.filter("logName=projects/" + options.getProjectId() + "/logs/test-log"));-Iterator<LogEntry> entryIterator = entries.iterateAll().iterator();-while (entryIterator.hasNext()) {-  System.out.println(entryIterator.next());+Page<LogEntry> entries = logging.listLogEntries(EntryListOption.filter(logFilter));

ditto

minherz

comment created time in 2 months

Pull request review commentgoogleapis/java-logging

fix: modify list log entries example documentation

 custom_content: |   imports at the top of your file:      ```java-  import com.google.cloud.Page;+  import com.google.api.gax.paging.Page;   import com.google.cloud.logging.LogEntry;   import com.google.cloud.logging.Logging.EntryListOption;   ```      Then, to list the log entries, use the following code:    ``` java-  Page<LogEntry> entries = logging.listLogEntries(-      EntryListOption.filter("logName=projects/" + options.getProjectId() + "/logs/test-log"));-  Iterator<LogEntry> entryIterator = entries.iterateAll().iterator();-  while (entryIterator.hasNext()) {-    System.out.println(entryIterator.next());+  Page<LogEntry> entries = logging.listLogEntries(EntryListOption.filter(logFilter));

From unfamiliar user's perspective it's not clear here where logFilter is coming from and what should be its value

minherz

comment created time in 2 months

PullRequestReviewEvent
PullRequestReviewEvent

issue commentgoogleapis/nodejs-logging-winston

Respecting winston formatting

Yeah, I think that putting formatted log entry into message field of jsonPayload would be a decent compromise. We want to use jsonPayload by default when we send logs to Cloud Logging. This allows us to provide more value to users in Logs Explorer. So the compromise you suggest makes sense to me.

krzysiekfonal

comment created time in 2 months

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentgoogleapis/java-logging

feat: Add an ability to delete logs based on project, folder, organization or billing account resource names

 public void run() {     assertSame(0, exceptions.get());   } +  private void testDeleteByBestination(

Destination

losalex

comment created time in 3 months

Pull request review commentgoogleapis/java-logging

feat: Add an ability to delete logs based on project, folder, organization or billing account resource names

 public boolean deleteLog(String log) {     return get(deleteLogAsync(log));   } +  public boolean deleteLog(String log, LogDestinationName destination) {+    return get(deleteLogAsyncImpl(log, destination));+  }+   public ApiFuture<Boolean> deleteLogAsync(String log) {-    DeleteLogRequest request =-        DeleteLogRequest.newBuilder()-            .setLogName(LogName.ofProjectLogName(getOptions().getProjectId(), log).toString())-            .build();+    return deleteLogAsyncImpl(log, null);+  }++  public ApiFuture<Boolean> deleteLogAsync(String log, LogDestinationName destination) {+    return deleteLogAsyncImpl(log, destination);+  }++  private ApiFuture<Boolean> deleteLogAsyncImpl(String log, LogDestinationName destination) {+    LogName name =+        Preconditions.checkNotNull(getLogName(getOptions().getProjectId(), log, destination));

can getOptions() or getOptions().getProjectId() also return null?

losalex

comment created time in 3 months

Pull request review commentgoogleapis/java-logging

feat: Add an ability to delete logs based on project, folder, organization or billing account resource names

 public void testDeleteLogAsync() throws ExecutionException, InterruptedException     assertTrue(logging.deleteLogAsync(LOG_NAME).get());   } +  @Test+  public void testDeleteLogBillingDestination() throws ExecutionException, InterruptedException {+    testDeleteByBestination(

typo: Destination

losalex

comment created time in 3 months

PullRequestReviewEvent

issue commentGoogleCloudPlatform/cloud-ops-sandbox

Reduce # of pages in NEOS tutorial

@daniel-sanche could you please re-assign to one of the new contributors?

simonz130

comment created time in 3 months

issue commentGoogleCloudPlatform/cloud-ops-sandbox

Reduce # of pages in NEOS tutorial

This is good ticket to take for folks who are getting started with Sandbox as contributors.

simonz130

comment created time in 3 months

push eventgoogleapis/nodejs-logging

F. Hinkelmann

commit sha fce0d546e4b20c76fcfc0c69d058d46618a71bc9

chore(cloud-rad): Add code fencing (#1175)

view details

push time in 3 months

delete branch googleapis/nodejs-logging

delete branch : fhinkel-rad-fencing

delete time in 3 months

PR merged googleapis/nodejs-logging

chore(cloud-rad): Add code fencing cla: yes api: logging

Code fencing

Code examples need code fencing around them to distingish from rich text for TSDoc.

Internally b/179483748

Script used: https://github.com/fhinkel/cloud-rad-script/blob/main/fixExampleComments.js

+185 -7

0 comment

9 changed files

fhinkel

pr closed time in 3 months

PullRequestReviewEvent
PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentgoogleapis/python-logging

chore(docs): added audit log sample to usage guide

 def client_list_entries(client, to_delete):  # pylint: disable=unused-argument         # [END client_list_entries_order_by]         break +    # [START logging_list_gke_audit_logs]+    import google.cloud.logging+    from datetime import datetime, timedelta, timezone+    import os++    # pull your project id from an environment variable+    project_id = os.environ["GOOGLE_CLOUD_PROJECT"]+    # construct a date object representing yesterday+    yesterday = datetime.now(timezone.utc) - timedelta(days=1)+    # Cloud Logging expects a timestamp in RFC3339 UTC "Zulu" format+    # https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry+    time_format = "%Y-%m-%dT%H:%M:%S.%f%z"+    # build a filter that returns GKE Admin Activity audit Logs from+    # the past 24 hours+    # https://cloud.google.com/kubernetes-engine/docs/how-to/audit-logging

maybe add a word or two about how to compose a filter (best practices):

  • strive to scope the filter to minimal time period
  • use indexed fields
daniel-sanche

comment created time in 3 months

PullRequestReviewEvent
PullRequestReviewEvent

Pull request review commentgoogleapis/python-logging

feat: make logging API more friendly to use

 def _do_log(self, client, _entry_class, payload=None, **kw):         kw["labels"] = kw.pop("labels", self.labels)         kw["resource"] = kw.pop("resource", self.default_resource) +        severity = kw.get("severity", None)+        if isinstance(severity, str) and not severity.isupper():+            # convert severity to upper case, as expected by enum definition+            kw["severity"] = severity.upper()++        if isinstance(kw["resource"], collections.abc.Mapping):+            # if resource was passed as a dict, attempt to parse it into a+            # Resource object+            try:+                kw["resource"] = Resource(**kw["resource"])+            except TypeError as e:+                # dict couldn't be parsed as a Resource+                raise TypeError("invalid resource dict") from e

+1 to the question. We generally should try to avoid crashing the library.

daniel-sanche

comment created time in 3 months

PullRequestReviewEvent
PullRequestReviewEvent
more