Useful Commands & Tools

Influxdbv2

# Local Linux install

# Export measurement to line protocol

$ sudo influxd inspect export-lp --bucket-id <id> --engine-path /var/lib/influxdb/engine/ --measurement <name> --output-path <path-to-file>

# import measurement from line protocol

$ sudo influx write --org <org> -b <bucket> -f <path-to-file> --token $INFLUX_TOKEN

# delete measurements

$ sudo influx delete --org <org> --bucket <bucket> --start '1970-01-01T00:00:00Z' --stop $(date +"%Y-%m-%dT%H:%M:%SZ") --predicate '_measurement="<name>"' --token $INFLUX_TOKEN

# run v1 client

$ influx v1 shell

# backup

$ influx backup <target dir> -t $INFLUX_TOKEN

# list retention policies

$ influx v1 dbrp list

# create default retention policy

$ influx v1 dbrp create --db <db> --rp autogen --bucket-id <bucketid> --token $INFLUX_TOKEN

WebRquest

Web page timings from Windows Powershell: https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/invoke-webrequest

Powershell version
PS > $PSVersionTable

Show current user certificate thumbprints
PS > get-ChildItem Cert:\CurrentUser\My

Set Tls version
PS > [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Measure page download time
PS > Measure-Command {Invoke-WebRequest -Uri "https://<>" -CertificateThumbprint ""}

Curl

Example curl request below prints out details about the timing and size of the request. Further details and options can be found on the man page for curl here: https://curl.se/docs/manpage.html

$ curl -s -o /dev/null --cert <pem> --key <pem> --insecure -k "url" -w "URL=%{url_effective} RTT=%{time_total} SIZE=%{size_download} TTFB=%{time_starttransfer} CODE=%{http_code} DNS=%{time_namelookup} CONNECT=%{time_connect} appconnect=%{time_appconnect}\n"

chrome://net-internals

A number of useful tools, but very useful for debugging and tracing socket streams used by chrome. Further details can be found here: https://chromium.googlesource.com/chromium/src/+/HEAD/net/docs/crash-course-in-net-internals.md

NMON

Linux monitoring with Excel macro for creating a spreadsheet or nmonchart for creating an html report. For more information see here: https://nmon.sourceforge.io/pmwiki.php

Git

# clone a repository

git clone <repository>

# checkout and track remote branch

git branch -a

# git checkout -b <feature-name> origin/<feature-name>

git status

git add .

git commit -m "commit message"

git push

# If feature branch is behind remote main, update local main and use rebase to preserve history.

git checkout main

git pull

git checkout <feature-name>

git rebase main

# If there are merge conflicts on added/removed files correct this using

git add/rm <filename>

# If there are merge conflicts on changed files, edit the file and remove the unwanted changes and conflict markers. Then add the updated file

git add <filename>

git rebase --continue

# Edit local git config on linux

git config --global --edit

Redis

keys *

type <key>

lrange <key> <start> <end>

del key

dbsize

info

type <key>

delete all keys from a redis instance: 

redis-cli keys "*" | xargs -I {} redis-cli del {}

Java

# Print command line flags available for the JVM (https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html)

java -XX:+PrintFlagsFinal

# Print ergonomically selected flags for the JVM that appeared on the command line

java -XX:+PrintCommandLineFlags

# Java17 - show the cgroup version, cpu and memory limits.

java -XshowSettings:system

Jcmd

# Print options

jcmd <pid>

# Get flags that can be set using jcmd

jcmd <pid> VM.flags -all | grep manageable

# Set flag

jcmd <pid> VM.set_flag <flag> <value>

Jmap

# create heap dump of all objects in binary format

jmap -dump:format=b,file=/tmp/dump.hprof <pid>

Java Flight Recorder

Java flight recorder can be used for profiling a JVM with claimed low overhead. This is particularly useful as it can be used for looking at an already running JVM without having to enable command line options for the running application. JFR can provide useful information on e.g. heap use and object counts, GC activity and pause time, socket i/o, thread locking. For further information please see documentation here: https://docs.oracle.com/javacomponents/jmc-5-4/jfr-runtime-guide/about.htm#JFRUH170.

# Example commands to start JFR using jcmd are shown below.

jcmd <pid> JFR.start duration=60s

jcmd JFR.check

# Unless a filename is specified the default directory data is written to is /tmp.
# By default jfr will chunk up a recording in to separate files. To re-combine these into a single # file for analysis run:

jfr assemble <directory> output-file-name.jfr

Keytool

# create a jks from pfx
# e.g. from chrome export certificate with all certificates in the chain and include private key

keytool.exe -importkeystore -srckeystore "<name.pfx" -srcstoretype pkcs12 -destkeystore "<name>.jks"

cAdvisor

Container resource monitoring tool. This is very useful as can be run as a standalone binary with an HTTP UI with minimal install. https://github.com/google/cadvisor

Top

# display cpu by thread for a process

top -H -p <pid>

# sample processes every second, for 30 seconds and output to a file 

top -d 1 -n 30 -b > top-output-processes.txt

# sample threads for a processes every 100ms, for 30 seconds and output to a file 

top -H -p <pid> -d 0.1 -n 300 -b > top-output-threads-100ms.txt

# get the average running thread count for a process in a thread sample (e.g. above)

grep Threads top-output-threads-100ms.txt | tail -299 | tr -s ' ' | cut -d' ' -f4 | awk '{total += $1; n++}END{print total, total/n}'

ctr

A debug and administrative client for interacting with the containerd daemon

$ for i in ctr --namespace k8s.io.containers ls | grep <name> | cut -d' ' -f1;
do
ctr --namespace k8s.io task ist | grep $i;
done

e.g. a087b8b5e433f80114dc5104f818d1a183af48bdb23774f0e28f9ee4b43ab5ae 4976 RUNNING

Load Average

/proc/loadavg

0.29 0.17 0.15 1/586 249213

MongoDB

show dbs

use <db>

db.getCollectionNames()

db.<collection>.getIndexes()

RabbitMQ

rabbitmq-diagnostics status

rabbitmqctl list_queues

Kubernetes

kubectl get pods -n <ns>
kubectl top node
kubectl edit hpa -n <ns>
kubectl edit deployment/<service> -n <ns>
kubectl edit deployment --replicas=n <service> -n <ns>