Fabian

Zabbix: Alert to PagerDuty using Zabbix3

Having Zabbix send alert mails directly to user groups is typically outgrown as the system matures and the number of alerts increase, new lines of business and engineering groups are on-boarded, and on-call scheduling is implemented. If you already use PagerDuty for on-call scheduling, then it makes perfect sense to have Zabbix create incidents in Zabbix: Alert to PagerDuty using Zabbix3

VMware: Exporting from Oracle VirtualBox/Vagrant to vCloud Director

Oracle VirtualBox as a virtualization engine paired with Vagrant provides a cross-platform virtualization-agnostic workflow for Linux, Windows, and MacOS.  It is light enough to allow a developer to setup, test, and tear down virtual infrastructure as part of a unit test. You may find yourself in a position where you have built a VM in VMware: Exporting from Oracle VirtualBox/Vagrant to vCloud Director

ELK: Architectural points of extension and scalability for the ELK stack

The ELK stack (ElasticSearch-Logstash-Kibana), is a horizontally scalable solution with multiple tiers and points of extension and scalability. Because so many companies have adopted the platform and tuned it for their specific use cases, it would be impossible to enumerate all the novel ways in which scalability and availability had been enhanced by load balancers, ELK: Architectural points of extension and scalability for the ELK stack

ELK: Scaling an ElasticSearch Cluster

The heart of the ELK stack is Elasticsearch.  In order to provide high availability and scalability, it needs to be deployed as a cluster with master and data nodes.  The Elasticsearch cluster is responsible for both indexing incoming data as well as searches against that indexed data. Resources As described in the documentation, if there ELK: Scaling an ElasticSearch Cluster

ELK: Feeding the logging pipeline

The most varied point in an ELK (Elasticsearch-Logstash-Kibana) stack is the mechanism by which custom events and logs will get sent to Logstash for processing. Companies running Java applications with logging sent to log4j or SLF4J/Logback will have local log files that need to be tailed.  Applications running in containers may send everything to stdout/stderr, ELK: Feeding the logging pipeline

ELK: Federated Search with a Tribe node

Although the ELK stack has rich support for clustering, clustering is not supported over WAN connections due to Elasticsearch being sensitive to latency.  There are also practical concerns of network throughput given how much data some installations index on an hourly basis. So as nice as it would be to have a unified, eventually consistent ELK: Federated Search with a Tribe node

ELK: Pointing Kibana to a Client Node

Kibana is the end user web application that allows us to query Elasticsearch data and create dashboards that can be used for analysis and decision making. Although Kibana can be pointed to any of the nodes in your Elasticsearch cluster, the best way to distribute requests across the nodes is to use a non-master, non-data ELK: Pointing Kibana to a Client Node

SaltStack: Creating a ZooKeeper External Pillar using Python

SaltStack has the ability to create custom states, grains, and external pillars.  There is a long list of standard external pillars ranging from those which read from local JSON files, to those that pull from EC2, MongoDB, etcd, and MySQL. In this article, we will use Apache ZooKeeper as the storage facility for our SaltStack SaltStack: Creating a ZooKeeper External Pillar using Python

Python: Using Python, JSON, and Jinja2 to construct a set of Logstash filters

Python is a language whose advantages are well documented, and the fact that it has become ubiquitous on most Linux distributions  makes it well suited for quick scripting duties. In this article I’ll go through an example of using Python to read entries from a JSON file, and from each of those entries create a Python: Using Python, JSON, and Jinja2 to construct a set of Logstash filters

AppDynamics: Silent Install of Controller on Ubuntu and license directory

For full instructions on installing the AppDynamics Controller on Linux, see the official documentation.  However, when you get to the step for installing in silent mode, it can be confusing because although it shows you how to specify the path to a response file and the keys available, it does not give you a sample AppDynamics: Silent Install of Controller on Ubuntu and license directory

Ubuntu: Decompiling Java classes on Ubuntu using Eclipse and JD-GUI

Decompiling Java classes is sometimes associated with dubious behavior around proprietary and licensed software, but in reality there are many valid reasons why one may find it necessary to dig into Java class files and jar/war archives.  It may be as simple as your development team no longer having the 5 year old version of Ubuntu: Decompiling Java classes on Ubuntu using Eclipse and JD-GUI

Ubuntu: Determine system vulnerability for Dirty COW CVE-2016-5195

The Dirty COW vulnerability affects the kernel of most base Ubuntu versions.  Especially when running an Ubutu HWE stack, it can be a bit confusing to determine if your kernel and Ubuntu version are affected. If you need to validate patching, then you can use a simple C program to exercise this read-only write vulnerability Ubuntu: Determine system vulnerability for Dirty COW CVE-2016-5195

SaltStack: Keeping Salt Pillar data encrypted using GPG

When automating software and infrastructure, it is not uncommon to need to supply a user id and password for installation or other operations.  While it is certainly possible to pass these plaintext credentials directly in the state, this is not best practice. # not best practice!!! testdb_user: mysql_user.present: – name: frank – password: “test3rdb” – SaltStack: Keeping Salt Pillar data encrypted using GPG

SaltStack: Setting a jinja2 variable from an inner block scope

When using jinja2 for SaltStack formulas you may be surprised to find that your global scoped variables do not have ability to be modified inside a loop.  Although this is counter intuitive given the scope behavior of most scripting languages it is unfortunately the case that a jinja2 globally scoped variable cannot be modified from SaltStack: Setting a jinja2 variable from an inner block scope

Syslog: Sending Java log4j2 to rsyslog on Ubuntu

Logging has always been a critical part of application development.  But the rise of OS virtualization, applications containers, and cloud-scale logging solutions has turned logging into something bigger that managing local debug files. Modern applications and services are now expected to feed log aggregation and analysis stacks (ELK, Graylog, Loggly, Splunk, etc).  This can be Syslog: Sending Java log4j2 to rsyslog on Ubuntu

Ubuntu: Using Fiddler to analyze Chrome/Firefox network capture

The prevalence of the long chains of firewall and reverse proxy solutions present in production infrastructure (and made even more popular with the dynamic routing introduced with containers) has made analysis of the end-user side of the network exchange a critical tool in troubleshooting. Fiddler has long been a solid tool for both proxy capture Ubuntu: Using Fiddler to analyze Chrome/Firefox network capture

Ubuntu: HWE Hardware Enablement Stacks, LTS, and the Kernel

If you installed (or upgraded to) a later Ubuntu point release:  >= 12.04.2, >=14.04.2, or >=16.04.2, you may now be wondering why the system is warning you upon every login that you will no longer receive security updates. WARNING: Security updates for your current Hardware Enablement Stack ended on 2016-08-04:  * http://wiki.ubuntu.com/1404_HWE_EOL Although the first Ubuntu: HWE Hardware Enablement Stacks, LTS, and the Kernel

Node.js: Packaging modules for offline deployment using npm-bundle

In a production environment, it is common to have restricted internet access on the production deployment hosts.  This means that using the standard ‘npm install’ and pulling modules from the registry.npmjs.org repository is not an option. Given the breadth of the dependency graph required for most modules, this packaging is something you want automated without Node.js: Packaging modules for offline deployment using npm-bundle

Ubuntu: Pre-Validate Network ACL and Firewall Connectivity with Netcat

Although virtualization has pushed a self-service culture for infrastructure, it is still common in production environments to need your  Network Operations team to open the required ports necessary for any new application deployment. So, while you may be able to create the base virtualized host, you can’t go much further without the network connectivity.  And Ubuntu: Pre-Validate Network ACL and Firewall Connectivity with Netcat

SaltStack: Troubleshooting Basic Network Connectivity of Minion on Ubuntu

When troubleshooting basic connectivity from your SaltStack minions to your Salt master, the first thing to remember is the basic flow – the minions initiate the connection to port 4505/4506 on the Salt master. With this in mind, if you have modified /etc/salt/minion so that the master is explicitly set and logs are set to SaltStack: Troubleshooting Basic Network Connectivity of Minion on Ubuntu

Ubuntu: Ignoring Transitive Trust Domains when using Samba/Winbind

If your Ubuntu host is authenticating against an Active Directory Domain Controller, you may find there are multiple subdomains or transitive trusts visible.  Which is not a problem in most cases – but if your host is in a subnet where a connection to these other subdomain or transitive trust domains is not possible, you Ubuntu: Ignoring Transitive Trust Domains when using Samba/Winbind

OpenWrt: Installing LuCI Web Interface after Deploying latest OpenWrt Image

The stable OpenWrt images are built with LuCI, an OpenWrt web administration interface.  But if you are using the bleeding edge or trunk OpenWrt images, then you won’t get this package. Luckily, it is not difficult to add the LuCI package to the install.  As long as you have Dropbear enabled for ssh access, or OpenWrt: Installing LuCI Web Interface after Deploying latest OpenWrt Image

OpenWrt: Installing a TFTP Server on Ubuntu for OpenWrt Firmware Updates

The Trivial File Transfer Protocol (TFTP) is an extremely simple protocol most often used for network booting strategies, such as PXE and flashing OpenWrt images unto consumer routers. I go over full instructions for flashing OpenWrt using Ubuntu and flashing a sysupgrade in another post, this article will focus specifically on setting up a tftp OpenWrt: Installing a TFTP Server on Ubuntu for OpenWrt Firmware Updates

GIT: Calling git clone using password with special character

It is more popular to use an ssh key instead of a password when automating a git clone from a guest OS.  But if you do need to specify the password directly into the console command, it takes this form: $ git clone https://<user>:<password>@<gitserver>/<path>/<repo>.git Which works fine if the password is plaintext, but if it GIT: Calling git clone using password with special character

Ubuntu: Installing Packages without Public Internet Access

In production data centers, it is not uncommon to have limited public internet access due to security policies.  So while running ‘apt-get’ or adding a repository to sources.list is easy in your development lab, you have to figure out an alternative installation strategy because you need a process that looks the same across both development Ubuntu: Installing Packages without Public Internet Access

Ubuntu: Creating a Samba/CIFS share to quickly share files with Windows

We live in a multi-platform world, and the ability to easily share folders of content between users in the same protected network is a function made very convenient in the Windows world with CIFS shares (e.g. \\mydesktop\sharedfolder). Luckily for Ubuntu users, it is pretty easy to setup CIFS shares to offer that same interoperability with Ubuntu: Creating a Samba/CIFS share to quickly share files with Windows

vRealize Log Insight: Creating your own content pack for field extraction

Content Packs are plugins that allow you you to create pre-packaged knowledge about specific event types. For example, you can create a content pack that knows how to extract fields from one of your custom log sources.  Beyond extracted fields, you can also add saved queries, aggregations, alerts, dashboards, and visualizations. Incoming Events from Agent vRealize Log Insight: Creating your own content pack for field extraction