Staying on top of our stack with Slack!

Shivam Dixit
4 min readFeb 22, 2016

--

Slack is a powerful tool for team communication. It offers features like advanced text search, custom notifications, reminders, etc., which are quite helpful for messaging. But at Kayako, Slack is used more than just as a messaging app. We are obsessed with incoming/outgoing webhooks and custom integrations. Here’s a glimpse of what all we use Slack for:

Server Monitoring

We have enabled integrations like NewRelic, Nagios, and Pingdom with Slack to know the real-time health status of our servers. We use Opsmatic for monitoring services and files on servers.

Nagios, NewRelic and Pingdom in action

For security reasons we have censored the sensitive data in all the images

Opsmatic in action

Monitoring chef-client run:

Application Monitoring

All our applications are configured with ELK (Elasticsearch, Logstash, and Kibana) for logging and monitoring, but sometimes it is much faster to view the exceptions and errors on Slack. Any exceptions in our applications are automatically dispatched to their respective channel on Slack, along with a stack trace.

Example of exception trace

Not only exceptions, but any logs with a level greater than or equal to Warning (i.e Warning, Error, Critical and Fatal) are also dispatched to Slack.

To ensure that our conversations are not lost in the stream of exceptions and logs, we have created separate channels for monitoring. (We have over 125 channels on Slack!)

We have also enabled Bugsnag integration for monitoring JS exceptions.

Bugsnag Integration

Deployments

At Kayako, we have been pioneering ChatOps. We have built a Slack bot “Guru Ji”, who is no less than a Ninja. The bot can deploy any of our applications on required servers with just a single line of a message.

Deploying code through bot

As you might have guessed, the status of the deployment too comes on Slack.

The code is deployed on ~25 servers in just 17 seconds with a single line of a message. The best part is, you can deploy your code to 100s of servers from anywhere, whether you are commuting or you are in a meeting. You don’t need to have access to these servers. (We follow Continuous Delivery and code on our branches is always ready to be deployed.)

Post-deployment actions like cache invalidation, restarting Beanstalkd workers, updating database, etc., are also handled.

In case something goes wrong, we get the message right there:

Github and Jira

These integrations are quite helpful to keep the team updated on the progress of a project. Everyone is aware of who is working on which task.

Github Integration
JIRA integration

Incoming Webhooks

When it comes to development, we follow industry best practices like rigorous peer reviews, automated test suites, automated code quality checks, etc. We have added custom incoming webhooks in Slack, which alert us if:

  • Someone merges their own pull request
  • Someone pushes a commit which breaks the build of a repository
  • Someone pushes a commit directly, without a pull request
  • Someone merges a pull request without the green build status
  • Someone creates custom branches on upstream
  • Any other suspicious activity

Birthdays and Anniversaries

We have a Cron job which executes every morning, fetches birthdays/anniversaries on that day (from our HR management system), and sends notification on Slack. This is a great way of keeping your team updated about the upcoming events.

Miscellaneous

Guru ji is not just about deployments. It can do things like – generating MRR reports, generating graphs, correcting spellings, throw random puzzles, order meals, and some jokes during the time of stress.

Available commands for MRR
MRR reports

This is just the beginning. We are constantly adding more features to our chat bot.

Share your favorite Slack integrations and how your team uses Slack effectively, in comments below.

--

--

Shivam Dixit

Web developer and open source enthusiast. Loves to break web applications.