How to get effectively notified of issues on Google Cloud Platform (e.g. BigQuery) - google-bigquery

We have many production systems that are built on top of Google Cloud Platform, specifically using BigQuery. We have built error handling code, and incorporated all the usual best practices like back off and retry etc.
Sometimes however, there is an issue/outage on the Google Cloud Platform side of things which is out of our control. We'd like to be more pro-active to these types of outages, and somehow get notified of them as soon as possible so we can best mitigate them on our (application) side.
Is there any type of web hook, into knowing about issues on Google Cloud Platform?

Google Cloud Platform has a RSS status page that lists all known (and previous) issues on the platform. So you can either:
Subscribe the the RSS feed of this page using the RSS reader/app of your choice (we decided to create a dedicated Slack channel in our team hooked up to this).
Join the Google Cloud Platform community on Slack and join the google-cloud-status channel and which is wired up to the RSS feed.
This works well for us, and keeps us informed of issues/outages in a timely fashion.

Related

Whatsapp Cloud API

Can Whatsapp Cloud API be used for business as a reseller?
like what is the difference between the new Whatsapp Cloud API and the API we get from Resellers?
Also, is there an API to automate the signup process?
Those Resellers you mention are often Business Solution Providers (BSPs), or BSP partners.
So that implies, in order to be WhatsApp Cloud API reseller, you will need to be either a BSP or BSP partner.
The Cloud API architecture significantly simplifies the BSP’s operational and infrastructure requirements to integrate with WhatsApp Business Platform.
See "What is the architecture of the Cloud API?", in Cloud API FAQs
As a BSP or its partner, a reselling program is available to you both for On-premises/Managed WhatsApp Business API and Cloud API. However, you need to take into account Cloud API is relatively new and all BSPs are currently adapting/expanding their current solutions to new service offered by Meta.
In other words, Cloud API is not yet available everywhere and current services offered by BSPs are more versatile and feature rich than Cloud API until this will eventually change.
The largest WhatsApp BSP is 360dialog, offering WhatsApp Business API integration Platform as a Service, and on-premises plans.
Since you asked about differences between Cloud API and BSPs, let me give a short comparison between Cloud API and 360dialog key differences, as an example:
Differences
360dialog
Meta Cloud API
Message Throughput (Per Second)
Flexible scalability setups for small to large businesses. Send up to 70 text messages per second for single-connect. Send up to 250 text messages per second for multi-connect.
Up to 80 messages per second of combined sending and receiving (inclusive of text and media messages). In the event of high system loads, a business may experience reduced message throughput. Starting in July 2022, support up to 250 messages per second of combined sending and receiving (inclusive of text and media messages), by request
SLA - Uptime
Standard and Premium support with different SLAs: >99%, >98%
Goals of 99.9% at GraphAPI.
SLA - Disaster Recovery
Average response time of 4h. Escalation Path to Meta team after 360dialog investigation.
No SLA
Sources:
Full comparison table of differences between On-premises and Cloud API solutions.
360dialog Pricing
So, as you might've noticed, with BSP will work more closely with you as a solution provider and will offer you more flexibility depending on the business scale.
WhatsApp Business API requires some developer effort, but there are also different WhatsApp API based solutions that make this whole process a lot easier.
One of them is get.chat WhatsApp Business Team Inbox & WhatsApp Integration API which will help you to integrate with WhatsApp much faster. Plus, it will enable access to non-technical people in your team/company, too!
I am a co-founder and CTO so I am open to answer any questions if you want to know more about our solution. Here is also a link to the docs if you're interested in learning more by yourself.
Further reading:
An easy guide about WhatsApp Business API by get.chat
Cloud API FAQs - offered by Meta directly
On-premises WhatsApp Business API FAQs - hosted by BSPs and resellers
now there are two types of Whatsapp Business API. The ones from the diferent Busniness Solution Providers (BSP) and the one from Meta (Whatsapp CloudAPI).
I think that untill now, each BSP has develped it´s own APIS starting off the one provided by Meta. So each BSP offeres his own APIs (endpoints, libraries..).
Meta has now published the API offered to the BSP and now every business has direct access to it. No more BSP are needed, unless you want and easy to use solution.
The main difference I see between BSP and Meta API is that BSP are easier to use. MetaAPI is a huge complex system.
Now you don't need to look at BSP, all you can do is set up, create a business account and developer effort to make things work according to your business desire, and create message templates.
please have a below link for further eloboration.
https://www.facebook.com/business/help/338665938087159

How to move data from Adjust, Funnel and facebook Ads to google big query?

Can someone provide me the steps to push data from Funnel,Adjust and Facebook Ads to google big query ??
We are not interested in third party softwares like stitch.
Thanks
Welcome to StackOverflow!
Assuming you mean Funnel.io here? If so, isn't this what Funnel already does for you? If you are looking to migrate away from that product and do this yourself, you'r going to need to find importers for each of the data sources which Funnel connects too individually. It may be, actually, that you just want to stick with Funnel to make life easier?
BigQuery offers several connectors to external data sources via their Data Transfer Service, while Facebook Ads is not one of the official connectors, Google recently opened up the platform to third-party connections via the Google Cloud Platform Marketplace, which does contain a connector for Facebook Ads.
However, this means you are once again using a third party connection, so may not be what you are looking for.
If you don't want to use third party connections, and there isn't a Google built solution, then your remaining option is to build your own data importer, usually via the data sources API.

How to build Google Analytics 'collect' like api using Google Cloud services

I'm trying to build a data collection web endpoint.The Use case is similar to Google Analytics collect API. I want to add this endpoint(GET method) to all pages on the website and on-page load collect page info through this API.
Actually I'm thinking of doing this by using Google Cloud services like Endpoints, BQ(for storing the data).. I don't want to host it in any dedicated servers. Otherwise, I will be end up doing a lot for managing/monitoring the service.
Please suggest me how do I achieve this with Google Cloud Service? OR direct me to right direction if my idea is wrong
I suggest focussing on deciding where you want to code to run. There are several GCP options that don't require dedicated servers:
Google App Engine
Cloud Functions/Firebase Functions
Cloud Run (new!)
Look here to see which support Cloud Endpoints.
All of these products can support running code that takes the data from the request and sends it to the BigQuery API.
There are various ways of achieving what you want. David's answer is absolutely valid, but I would like to introduce Stackdriver Custom Metrics to the discussion.
Custom metrics are similar to regular Stackdriver Monitoring metrics, but you create your own time series (Stackdriver lingo described here) to keep track of whatever you want and clients can sent in their data through an API.
You could achieve the same thing with a compute solution (Google Cloud Functions for example) and a database (Google BigTable for example) and writing your own logic.. but Custom Metrics is an already built solution that includes dashboards and alerting policies while being a more managed solution.

Clarify the meaning of APIs

An application-programming interface (API) is a set of programming instructions and standards for accessing a Web-based software application. Could someone explain to me in case of Google maps or Youtube which is the API and which is the software application? Are both visible to us and how? I know there are tons of articles out there, however I cannot clarify the above. APIs are like the waiters that transfer data among different machines. Okay, which exactly is the Google maps API and how do we call/use it? And which is the Google maps software application which is accessed by the API? When we write for example http://maps.google.co.uk/ do we call the API? My query may seem silly but I cannot find a good answer for that.
An application-programming interface (API) is a set of programming
instructions and standards for accessing a Web-based software
application.
Firstly, an API is not just for web-based software. Even your computer's OS provides APIs for hardware and software installed in the box.
For your question, an API is a method (code instructions) to connect your application to the features of another system. Allowing your application to use thay system's features as provided via the API.
Could someone explain to me in case of Google maps or Youtube which is
the API and which is the software application?
In the case of Youtube... Let's say you are making some Android video player app that you also want to be able to playback Youtube videos within that app. The software application is your own Android player code and to access the Youtube data you would use Youtube's Android API.
An example of using the API is this module : YouTubePlayer which as you can see provide API commands like loadVideo(String videoId, int timeMillis). Where videoId is the Youtube ID and timeMillis is the desired start time within the video).
When we write for example http://maps.google.co.uk/ how do we call the
API?
That's not how you would call the API. You must first visit the documentation of the API to see how it's expected to call features within your own app.
Google Maps : https://developers.google.com/maps/documentation/
Let's assume now you're coding a Javascript app, you can see the commands here as a startng point. There is also an example page showing code & result.
Simple terms:
API = the waiter
Application Software = the chef
You order from the waiter. The waiter brings it to the chef. The chef prepares the food. The waiter then brings you your food. Then you figure out what to do with the food; eat it, take it home, throw it on the floor, let your dog eat it, give it the homeless, etc...
A website, app, etc... would send an API request (your order with the waiter) to Google Maps (the chef). If your API request is valid, Google Maps will send back an response (your cooked food with the waiter). Then the website or app takes the returned data and displays it in their custom way to you.
In the case of Google Maps, apps like Yelp and others use Google Maps' API to request specific data; routes, addresses, etc… and then they display it on their app.
To make an API request/call you have access to use the API, format it correctly, and figure out what to do when Google sends a response back : https://developers.google.com/maps/documentation/
API is a set of functions and procedures that allow the creation of applications which access the features or data of an operating system, application, or other service.
An API is like building block for your application. Multiple API's can exchange data without knowing the other's implementation. In a good design pattern , we should design API's for different independent tasks and then merge them.
Google Maps API
This is the google maps API which a developer can use to develop his own piece of software.
Whenever we use any software and it's different features, we might be using their API's without generally knowing of them.
A software application is always visible to us, but an API is visible only if the developer wants to expose it for community use.
EDIT
Using Google maps API
This link has the documentation and examples on how to use the google maps API using javascript.
Hope it helps!
When you use software, web applications included, you are in most cases using a wrapped API. Software developers took the time to take a raw back end API which executes commands on the system, and made these endpoints easy to use for a specific user in an intended universe of discourse, or domain. End users do not have direct access to everything the API has to offer all at once, so it is not "available" in the same sense that it is available to the developers, but it is available in another sense because they are using the API to execute commands on the system by virtue of the Application that was Programmed with that Interface existing and working.
The Google Maps API is used to integrate the power of Google Maps into almost any application. It provides facilities for customization and much more. When you use the Google Maps webapp, it is, to my knowledge, built using many components of the Google Maps API, as are the Google Maps apps for any other platform, such as Android. Does this mean you as a user are using the API? Only through the application; the application talks to the API for you.
“An application programming interface (API) is a set of routines, protocols, and tools for building software applications. An API expresses a software component in terms of its operations, inputs, outputs, and underlying types. An API defines functionalities that are independent of their respective implementations, which allows definitions and implementations to vary without compromising each other. A good API makes it easier to develop a program by providing all the building blocks.
APIs often come in the form of a library that includes specifications for routines, data structures, object classes, and variables. In other cases, notably SOAP and REST services, an API is simply a specification of remote calls exposed to the API consumers.
An API specification can take many forms, including an International Standard, such as POSIX, vendor documentation, such as the Microsoft Windows API, or the libraries of a programming language, e.g., the Standard Template Library in C++ or the Java APIs.
An API differs from an application binary interface (ABI) in that an API is source code-based while an ABI is a binary interface. For instance POSIX is an API, while the Linux Standard Base provides an ABI”.
To speak plainly, an API is the messenger that runs and delivers your request to the provider you’re requesting it from, and then delivers the response back to you.
To give you a familiar example, think of an API as a waiter in a restaurant.
Imagine you’re sitting at the table with a menu of choices to order from, and the kitchen is the provider who will fulfill your order.
What’s missing is the critical link to communicate your order to the kitchen and deliver your food back to your table.
That’s where the waiter (or API) comes in. ”AHEM”
The waiter takes your order, delivers it to the kitchen, and then delivers the food (or response) back to you. (Hopefully without letting your order crash if designed correctly)
Now that we’ve whetted your appetite, let’s apply this to a real API example. In keeping with our theme, let’s book a flight to a culinary capital – Paris.
You’re probably familiar with the process of searching for airline flights online. Just like at a restaurant, you have a menu of options to choose from ( a dropdown menu in this case). You choose a departure city and date, a return city and date, cabin class, and other variables (like meal or seating, baggage or pet requests)
In order to book your flight, you interact with the airline’s website to access the airline’s database to see if any seats are available on those dates, and what the cost might be based on certain variables.
But, what if you are not using the airline’s website, which has direct access to the information? What if you are using online travel service that aggregates information from many different airlines? Just like a human interacts with the airline’s website to get that information, an application interacts with the airline’s API.
The API is the interface that, like your helpful waiter, runs and and delivers the data from that online travel service to the airline’s systems over the Internet.
It also then takes the airline’s response to your request and delivers right back to the online travel service .
And through each step of the process it facilitates that interaction between the travel service and the airline’s systems - from seat selection to payment and booking.
So now you can see that it’s APIs that make it possible for us all to use travel sites. They interface with with airlines’ APIs to gather information in order to present options back to us
The same goes for all interactions between applications, data and devices - they all have API’s that allow computers to operate them, and that's what ultimately creates connectivity.
API’s provide a standard way of accessing any application, data or device whether it is shopping from your phone, or accessing cloud applications at work.
So, whenever you think of an API, just think of it as your waiter running back and forth between applications, databases and devices to deliver data and create the connectivity that puts the world at our fingertips. And whenever you think of creating an API,
--MuleSoft

Google Analytics for Mac OSx application

Is it possible to use Google Analytics API's to track Mac OSX applications?
If not could any one suggest me an alternative for Google Analytics.
Google Analytics is designed to work with web applications not for desktop apps. Although it might be possible to collect info about your application and send it to your Google Analytic account but the amount of work required to retrofit might be better spent, building your own Analytic solution.
A good starting point would be to create a simple web service, which collects information regarding clicks. Then rewrite your application to call that web service on every click within your application.
You would ideally want to store this information locally and submit it to the web service in batches. You would also want to design the application, so that if you ever shut down the web service, the application would still be able to operate.
UPDATE: As pointed out in the comments by Václav Slavík, they have added apps analytics for iOS/Android.
I made a simple set of classes for doing this:
https://github.com/stephenlind/SimpleCocoaGoogleAnalytics
Google Analytics is not only for web applications, but also for mobile. It's available on the platform like android, iOS, etc. If you want to track your MAC OS X application, you can choose DeskAppTrack or DeskMetrics. DeskAppTrack is only available on MAC. It provide a professional data statistical analysis and it's free. While DeskMetrics is available on MAC and Windows. Either one is ok.
This really depends on how detailed you want to get. If you are are truly looking for analytics with detail and control flow data, you are better suited to created your own web service, as mentioned.
However, if you simply want to know a small number of operations, that occur at a small volume, i.e. when the app is launched (a quick and dirty solution): then in theory you could create a landing page on your site that contains a minimal head section, and a blank body, and then load the URL with an NSURL when you want to trigger the action.
Of course, you would have to include the google analytics tracking codes in the header, and you may need to load an off-screen webview to get the javascript to run. Like I said, quick and dirty.
In either case, you want to make sure the application will continue to perform properly, even if the web service / page is not present.