Writing Elasticsearch Apm Data to File - elasticsearch

Is it possible to write APM data to file and send this data to APM server via logstash or filebeat?
For security reasons, I can not reach the APM server directly on my Asp.net Core application.
This is APM configuration and I can only see the server Http address as configuration option:
"ElasticApm": {
"SecretToken": "",
"ServerUrls": "http://localhost:8200",
"ServiceName": "projectname",
"Environment": "development"
}

Related

How to get the cluster's JDBC/ODBC parameters programmatically?

Databricks documentation shows how get the cluster's hostname, port, HTTP path, and JDBC URL parameters from the JDBC/ODBC tab in the UI. See image:
(source: databricks.com)
Is there a way to get the same information programmatically? I mean using the Databricks API or Databricks CLI. I am particularly interested in the HTTP path which contains the Workspace Id.
You can use the Get operation of the SQL Analytics REST API (maybe together with List) - it returns the JDBC connection string as a part of response (jdbc_url field):
{
"id": "123456790abcdef",
"name": "My SQL endpoint",
"cluster_size": "Medium",
"min_num_clusters": 1,
"max_num_clusters": 10,
"auto_stop_mins": 30,
"num_clusters": 5,
"num_active_sessions": 30,
"state": "RUNNING",
"creator_name": "user#example.com",
"jdbc_url":"jdbc:spark://<databricks-instance>:443/default;transportMode=http;ssl=1;AuthMech=3;httpPath=/sql/protocolv1/o/0123456790abcdef;",
"odbc_params": {
"host": "<databricks-instance>",
"path": "/sql/protocolv1/o/0/123456790abcdef",
"protocol": "https",
"port": 443
}
}
HTTP Path is also there, as path part of the odbc_params object.
Another way is to go to Databricks console
Click compute icon Compute in the sidebar.
Choose a cluster to connect to.
Navigate to Advanced Options.
Click on the JDBC/ODBC tab.
Copy the connection details.
More details here
It's not available directly from Databricks API, but this is the template for cluster JDBC connection string:
jdbc:spark://<db-hostname>:443/default;transportMode=http;ssl=1;httpPath=sql/protocolv1/o/<workspace-id>/<cluster-id>;AuthMech=3;UID=token;PWD=<personal-access-token>
db-hostname is your hostname of your instance URL
workspace-id is the long numeric in your hostname (https://adb-1234512345123456.2.azuredatabricks.net/). It is available as workspaceId in output of az databricks workspace list or you can parse it from hostname
cluster-id the cluster you want the connection string for
personal-access-token is the token used for authentication
So all of above you already have or can get programmatically and substitute into template. It's a bit cumbersome, but that's the best we can do.

License error when connecting Kibana to Keycloak

We are configuring single sign-on using an OpenID Connect provider (Keycloak) in our ELK deployment and are seeing the following error in the browser when accessing the Kibana dashboard:
{
"statusCode": 403,
"error": "Forbidden",
"message": "[security_exception] current license is non-compliant for [oidc], with { license.expired.feature=\"oidc\" }"
}
I have a platinum license with Elastic, and it doesn't expire until October.
In order to use advanced security features in ECK such a OIDC and SAML integration, an Enterprise level subscription is required per Elastic's website:
https://www.elastic.co/subscriptions/enterprise

Using Consul to monitoring 3rd party services

As a organisation, we have 100+ services running at the same time, to keep the company functioning (namely software applications to assists the HR, Finance, Purchasing, Estate, Services, payroll, etc....)
our main focus is to look after the integrations between those services, so they can functioning as a single unit, rather than a list of isolated applications
LDAP, Oracle Database, SOAP webservices, tomcat based webApps are our critical services, we are currently looking at a service monitoring and discovery tool to manage those services
my questions is with our in house webApps or webservices, through the consul java API its fairly easy to register with the Consul server, and implement a health check mechanism. I found its difficult to register and monitoring other services such as LDAP, database or 3rd party SOAP services
anyone can share some examples or point me to the right directions please.
Use an external address in your service definition. For example, suppose you had an external LDAP server that you wanted to run a TCP check against:
{
"service": {
"name": "ldap",
"port": 4432,
"checks": [
{
"tcp": "my-ldap.example.org:4432",
"interval": "10s"
}
]
}
}
You could then query consul at ldap.service.consul. Be sure to look into prepared queries and the nearest attribute.

Parse.com Cloud Code not sending Push Notifications

I am currently running Parse Server 2.2.18 on Amazon AWS Elastic Beanstalk. I am attempting to use Cloud Code to send push notifications from an afterSave function to a particular channel. However, these notifications do not reach any devices even though they succeed.
This is the _PushStatus entry generated by Parse in my MongoDB database...
{
"_id": "eEaI2eReAi",
"pushTime": "2016-09-06T18:29:01.172Z",
"_created_at": {
"$date": "2016-09-06T18:29:01.172Z"
},
"query": "{\"channels\":{\"$in\":[\"E22\"]}}",
"payload": "{\"alert\":\"Test Group - Aye.\",\"e\":\"e\",\"badge\":\"Increment\"}",
"source": "rest",
"status": "pending",
"numSent": 0,
"pushHash": "675bcfb564807cdfc24085528c2cac39",
"_wperm": [],
"_rperm": []
}
Push notifications are sent properly through the Web UI on the Parse.com dashboard, where I can target a particular audience with the push of a button. The issue lies within my hosted Parse Server and it talking to APNS. I have correctly configured my push certificates and initialized my Node.js Parse Server with the local .p12 file and application bundle.
Any support is greatly appreciated.
-
Specifications:
Shared MongoDB cluster running Mongo 3.0.12.
Parse Server running 2.2.18 on AWS EB.

Allow loopback application to use previous access token

In my loopback application, once i create the access token (after login), it remains valid in my application unless application stops. when application restarted it is not allowing previous access token. How can i make previous access token validate even after restarting the application?
Your access token is getting stored by default in loopback memory. Therefore, it persists only until the application is restarted.
open server/model-config.json
"AccessToken": {
"dataSource": "db",
"public": false
}
This is the initial configuration of the Access Tokens. See here the storage datasource is db which is loopback memory. You need to change this to your MongoDB or some other storage
You need to store Access Tokens in the database rather in the memory.
For example lets store this to the mongoDb storage.
Assuming you already have mongodb installed in your system. Install the mongodb connector. In console type
npm install loopback-connector-mongodb
Now configure the server/datasources.json file. Add this line to this file.
"mongodb": {
"host": "0.0.0.0",
"port": 27017,
"database": "MONGODB DATABASE NAME",
"password": "MONGODB PASSWORD",
"name": "MONGODB NAME",
"connector": "mongodb",
"user": "YOUR USER NAME"
}
Open server/model-config.json. change this db to mongodb
"AccessToken": {
"dataSource": "mongodb",
"public": false
}
Now run the loopback server `Acces Tokens will be there even after restarting the application.

Resources