Skip to content

Instantly share code, notes, and snippets.

View snopoke's full-sized avatar

Simon Kelly snopoke

View GitHub Profile
@snopoke
snopoke / add_snapshot.py
Last active August 2, 2018 10:45
Size comparison for storing case block data in SQL alongside case transactions
import cStringIO
import json
import psycopg2
from django.db import connections
from corehq.apps.dump_reload.sql.serialization import JsonLinesSerializer
from corehq.form_processor.models import CommCareCaseSQL
cchq icds-cas run-shell-command couchdb2 -b "service couchdb2 stop && rm -rf /opt/data/couchdb2/* && rm -f /usr/local/couchdb2/couchdb/etc/local.d/z_admin.ini && rm -f /usr/local/couchdb2/couchdb/etc/local.d/auto_gen.ini && > /usr/local/couchdb2/couchdb/etc/local.d/ssl.ini && service couchdb2 start"
cchq icds-cas ap deploy_db.yml --limit couchdb2 --branch=je/icds-cas-deploy --skip-check --start-at-task="Create system databases"
@snopoke
snopoke / show_licenses.py
Created October 30, 2018 10:21
Print licenses of packages in requirements file.
# based on https://github.com/dhatim/python-license-check
import argparse
try:
from configparser import ConfigParser, NoOptionError
except ImportError:
from ConfigParser import ConfigParser, NoOptionError
import re
import sys
@snopoke
snopoke / log_sql_from_mobile_ucr.py
Last active April 1, 2019 08:49
Mobile UCR SQL Log
from casexml.apps.phone.tests.utils import call_fixture_generator
from corehq.apps.app_manager.fixtures.mobile_ucr import report_fixture_generator
from casexml.apps.phone.models import OTARestoreCommCareUser
from corehq.apps.users.models import CommCareUser
from corehq.apps.app_manager.models import Application
from datetime import date
import logging
from corehq.apps.app_manager.models import ReportModule
from corehq.apps.app_manager.fixtures.mobile_ucr import ReportFixturesProvider
import json
copy_files:
- couch6:
- source_host: couch4
source_user: couchdb
source_dir: /opt/data/couchdb2/
target_dir: /opt/data/couchdb2/
files:
- shards/00000000-1fffffff/commcarehq__fixtures.1495821829.couch
- .shards/00000000-1fffffff/commcarehq__fixtures.1495821829_design
- couch7:
@snopoke
snopoke / drop_child_tables.py
Last active March 15, 2019 11:25
Script to drop child tables of intermediate dashboard tables (ICDS)
# Drop child tables of intermediate aggregation tables.
# Each table must have a 'month' column.
# If tables have usage as reported by pg_stat_user_tables
# they will not be dropped.
import itertools
from datetime import date
from collections import defaultdict
from corehq.sql_db.connections import connection_manager
from sqlalchemy.exc import ProgrammingError
cat icds_cas_commcare-nginx_access.log | cut -d' ' -f 10,14 > cas_logs.txt
cat icds_cas_commcare-nginx_access.log.1 | cut -d' ' -f 10,14 >> cas_logs.txt
cat icds_commcare-nginx_access.log | cut -d' ' -f 10,14 >> cas_logs.txt
zcat icds_cas_commcare-nginx_access.log.*.gz | cut -d' ' -f 10,14 >> cas_logs.txt
echo -n 'Total,'; echo awk '{s+=$2}END{print s}' cas_logs.txt
echo -n 'App audio downloads,'; cat cas_logs.txt | grep CommCareAudio | awk '{s+=$2}END{print s}'
echo -n 'App video downloads,'; cat cas_logs.txt | grep CommCareVideo | awk '{s+=$2}END{print s}'
echo -n 'App image downloads,'; cat cas_logs.txt | grep CommCareImage | awk '{s+=$2}END{print s}'
echo -n 'Static files,'; cat cas_logs.txt | grep static | awk '{s+=$2}END{print s}'
@snopoke
snopoke / pg_log_loader.py
Created June 13, 2019 11:41
PostgreSQL log parsing into SQL
# Load and parse CSV logs from PostgreSQL
import os
import re
import sys
import postgres_copy
import six
import sqlalchemy
@snopoke
snopoke / nginx.conf
Created August 15, 2019 18:30
Example syslog-ng configuration for parsing nginx-timing logs
@module mod-python
@define logpath "/home/cchq/www/{{ deploy_env }}/logs"
@define environment "{{ env_monitoring_id }}"
@define statsd_host "{{ datadog_statsd_host|default('localhost') }}"
@define statsd_port "{{ datadog_statsd_port|default(8125) }}"
source src {
file("`logpath`/{{ deploy_env }}-timing.log" follow-freq(1) flags(no-parse));
};
@snopoke
snopoke / logstash.conf
Last active January 7, 2020 11:36
Logstash config example for parsing nginx-timing logs
##
# {{ ansible_managed }}
# See https://github.com/dimagi/commcare-cloud/compare/sk/logstash?expand=1
filter {
if [type] == "nginx-timing" {
grok {
match => [
"message", "\[%{HTTPDATE:http_timestamp}\] (?<cache_status>[-\w]+) %{WORD:http_method} %{DATA:request} HTTP/%{NUMBER:httpversion} %{NUMBER:status_code} %{NUMBER:request_time}"
]