Last active
March 5, 2019 17:58
-
-
Save superseb/6c57c123680e14c2551856fe707b6493 to your computer and use it in GitHub Desktop.
DEPRECATED: MOVED TO https://github.com/rancher/logs-collector/blob/master/rancher_logs_collector.sh Rancher Logs Collector v2
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# DEPRECATED: MOVED TO https://github.com/rancher/logs-collector/blob/master/rancher_logs_collector.sh | |
# Create temp directory | |
TMPDIR=$(mktemp -d) | |
# System info | |
mkdir -p $TMPDIR/systeminfo | |
hostname > $TMPDIR/systeminfo/hostname 2>&1 | |
hostname -f > $TMPDIR/systeminfo/hostnamefqdn 2>&1 | |
cat /etc/hosts > $TMPDIR/systeminfo/etchosts 2>&1 | |
cat /etc/resolv.conf > $TMPDIR/systeminfo/etcresolvconf 2>&1 | |
date > $TMPDIR/systeminfo/date 2>&1 | |
free -m > $TMPDIR/systeminfo/freem 2>&1 | |
uptime > $TMPDIR/systeminfo/uptime 2>&1 | |
dmesg > $TMPDIR/systeminfo/dmesg 2>&1 | |
df -h > $TMPDIR/systeminfo/dfh 2>&1 | |
lsmod > $TMPDIR/systeminfo/lsmod 2>&1 | |
mount > $TMPDIR/systeminfo/mount 2>&1 | |
ps aux > $TMPDIR/systeminfo/psaux 2>&1 | |
if $(command -v sysctl >/dev/null 2>&1); then | |
sysctl -a > $TMPDIR/systeminfo/sysctla 2>/dev/null | |
fi | |
# OS: Ubuntu | |
if $(command -v ufw >/dev/null 2>&1); then | |
ufw status > $TMPDIR/systeminfo/ubuntu-ufw 2>&1 | |
fi | |
if $(command -v apparmor_status >/dev/null 2>&1); then | |
apparmor_status > $TMPDIR/systeminfo/ubuntu-apparmorstatus 2>&1 | |
fi | |
# OS: RHEL | |
if [ -f /etc/redhat-release ]; then | |
systemctl status NetworkManager > $TMPDIR/systeminfo/rhel-statusnetworkmanager 2>&1 | |
systemctl status firewalld > $TMPDIR/systeminfo/rhel-statusfirewalld 2>&1 | |
if $(command -v getenforce >/dev/null 2>&1); then | |
getenforce > $TMPDIR/systeminfo/rhel-getenforce 2>&1 | |
fi | |
fi | |
# Docker | |
mkdir -p $TMPDIR/docker | |
docker info > $TMPDIR/docker/dockerinfo 2>&1 | |
docker ps -a > $TMPDIR/docker/dockerpsa 2>&1 | |
docker stats -a --no-stream > $TMPDIR/docker/dockerstats 2>&1 | |
if [ -f /etc/docker/daemon.json ]; then | |
cat /etc/docker/daemon.json > $TMPDIR/docker/etcdockerdaemon.json | |
fi | |
# Networking | |
mkdir -p $TMPDIR/networking | |
iptables-save > $TMPDIR/networking/iptablessave 2>&1 | |
cat /proc/net/xfrm_stat > $TMPDIR/networking/procnetxfrmstat 2>&1 | |
if $(command -v ip >/dev/null 2>&1); then | |
ip addr show > $TMPDIR/networking/ipaddrshow 2>&1 | |
ip route > $TMPDIR/networking/iproute 2>&1 | |
fi | |
if $(command -v ifconfig >/dev/null 2>&1); then | |
ifconfig -a > $TMPDIR/networking/ifconfiga | |
fi | |
# System logging | |
mkdir -p $TMPDIR/systemlogs | |
cp /var/log/syslog* /var/log/messages* /var/log/kern* /var/log/docker* /var/log/system-docker* /var/log/audit/* $TMPDIR/systemlogs 2>/dev/null | |
# Rancher logging | |
# Discover any server or agent running | |
mkdir -p $TMPDIR/rancher/containerinspect | |
mkdir -p $TMPDIR/rancher/containerlogs | |
RANCHERSERVERS=$(docker ps -a | grep -E "rancher/rancher:|rancher/rancher " | awk '{ print $1 }') | |
RANCHERAGENTS=$(docker ps -a | grep -E "rancher/rancher-agent:|rancher/rancher-agent " | awk '{ print $1 }') | |
for RANCHERSERVER in $RANCHERSERVERS; do | |
docker inspect $RANCHERSERVER > $TMPDIR/rancher/containerinspect/server-$RANCHERSERVER 2>&1 | |
docker logs -t $RANCHERSERVER > $TMPDIR/rancher/containerlogs/server-$RANCHERSERVER 2>&1 | |
done | |
for RANCHERAGENT in $RANCHERAGENTS; do | |
docker inspect $RANCHERAGENT > $TMPDIR/rancher/containerinspect/agent-$RANCHERAGENT 2>&1 | |
docker logs -t $RANCHERAGENT > $TMPDIR/rancher/containerlogs/agent-$RANCHERAGENT 2>&1 | |
done | |
# K8s Docker container logging | |
mkdir -p $TMPDIR/k8s/containerlogs | |
mkdir -p $TMPDIR/k8s/containerinspect | |
KUBECONTAINERS=(etcd etcd-rolling-snapshots kube-apiserver kube-controller-manager kubelet kube-scheduler kube-proxy nginx-proxy) | |
for KUBECONTAINER in "${KUBECONTAINERS[@]}"; do | |
if [ "$(docker ps -q -f name=$KUBECONTAINER)" ]; then | |
docker inspect $KUBECONTAINER > $TMPDIR/k8s/containerinspect/$KUBECONTAINER 2>&1 | |
docker logs -t $KUBECONTAINER > $TMPDIR/k8s/containerlogs/$KUBECONTAINER 2>&1 | |
fi | |
done | |
# System pods | |
mkdir -p $TMPDIR/k8s/podlogs | |
mkdir -p $TMPDIR/k8s/podinspect | |
SYSTEMNAMESPACES=(kube-system kube-public cattle-system cattle-alerting cattle-logging cattle-pipeline ingress-nginx) | |
for SYSTEMNAMESPACE in "${SYSTEMNAMESPACES[@]}"; do | |
CONTAINERS=$(docker ps -a --filter name=$SYSTEMNAMESPACE --format "{{.Names}}") | |
for CONTAINER in $CONTAINERS; do | |
docker inspect $CONTAINER > $TMPDIR/k8s/podinspect/$CONTAINER 2>&1 | |
docker logs -t $CONTAINER > $TMPDIR/k8s/podlogs/$CONTAINER 2>&1 | |
done | |
done | |
# K8s directory state | |
mkdir -p $TMPDIR/k8s/directories | |
if [ -d /opt/rke/etc/kubernetes/ssl ]; then | |
find /opt/rke/etc/kubernetes/ssl -type f -exec ls -la {} \; > $TMPDIR/k8s/directories/findoptrkeetckubernetesssl 2>&1 | |
elif [ -d /etc/kubernetes/ssl ]; then | |
find /etc/kubernetes/ssl -type f -exec ls -la {} \; > $TMPDIR/k8s/directories/findetckubernetesssl 2>&1 | |
fi | |
# etcd | |
mkdir -p $TMPDIR/etcd | |
# /var/lib/etcd contents | |
if [ -d /var/lib/etcd ]; then | |
find /var/lib/etcd -type f -exec ls -la {} \; > $TMPDIR/etcd/findvarlibetcd 2>&1 | |
fi | |
# /opt/rke contents | |
if [ -d /opt/rke/etcd-snapshots ]; then | |
find /opt/rke/etcd-snapshots -type f -exec ls -la {} \; > $TMPDIR/etcd/findoptrkeetcdsnaphots 2>&1 | |
fi | |
FILENAME="$(hostname)-$(date +'%Y-%m-%d_%H_%M_%S').tar" | |
tar cf /tmp/$FILENAME -C ${TMPDIR}/ . | |
if $(command -v gzip >/dev/null 2>&1); then | |
gzip /tmp/${FILENAME} | |
FILENAME="${FILENAME}.gz" | |
fi | |
echo "Created /tmp/${FILENAME}" | |
echo "You can now remove ${TMPDIR}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment